// MongoDB 数据库配置
import { MongoClient, Db } from 'mongodb'

// 数据库连接配置
const MONGO_URI = process.env.MONGO_URI || 'mongodb://localhost:27017'
const DB_NAME = process.env.DB_NAME || 'financial-platform'

let client: MongoClient | null = null
let db: Db | null = null

/**
 * 连接到 MongoDB 数据库
 */
export async function connectDB(): Promise<Db> {
  if (db) {
    return db
  }

  try {
    // 创建 MongoDB 客户端
    client = new MongoClient(MONGO_URI)

    // 连接到数据库
    await client.connect()
    console.log(' MongoDB 连接成功！')

    // 获取数据库实例
    db = client.db(DB_NAME)
    console.log(` 使用数据库: ${DB_NAME}`)

    return db
  } catch (error) {
    console.error(' MongoDB 连接失败:', error)
    throw error
  }
}

/**
 * 获取数据库实例
 */
export function getDB(): Db {
  if (!db) {
    throw new Error('数据库未连接，请先调用 connectDB()')
  }
  return db
}

/**
 * 关闭数据库连接
 */
export async function closeDB(): Promise<void> {
  if (client) {
    await client.close()
    client = null
    db = null
    console.log('🔌 MongoDB 连接已关闭')
  }
}
